package com.jd.scaffold.common.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 
 * 描述:基本实体类
 * <p>创建人：jrzhangwei 创建日期：2014年11月4日 </p>
 * @version V1.0
 */
@SuppressWarnings("serial")
public class BaseEntity extends BasePageDTO implements Serializable {
	
    private char _action_ = 'N';//N:no-operation,U:update,I:insert

    public void markUpdate() {
        _action_ = 'U';
    }

    public void markInsert() {
        _action_ = 'I';
    }
    
    public void markDelete() {
        _action_ = 'D';
    }

    public boolean canUpdate() {
        return _action_ == 'U';
    }

    public boolean canInsert() {
        return _action_ == 'I';
    }
    
    public boolean canDelete() {
        return _action_ == 'D';
    }
    
    /**
     * 排序信息 该字段会自动封装到查询sql中
     * 使用举例："iou_id desc,term_no asc"
     */
    public String columnSort;
    
    /**
	 *创建时间
	 */
	private Date createdTime;
	/**
	 *修改时间
	 */
	private Date modifiedTime;
	/**
	 *记录最近更新用户
	 */
	private String lastUpdateUsrid;
	/**
	 *记录总共更新次数
	 */
	private Integer lastUpdateNo;
	/**
     * <P>区间查询字段（主要为了兼容日期区间查询条件等）</p>
     * <P>用法：传递的查询条件为：key值为字段属性+"Begin"/"End"; value值为区间的边界值</p>
     * <P>举例：字段属性applyTime根据区间查询： applyTimeBegin 和applyTimeEnd</p>
     */
	private Map<String,Object> querySectionMap = new HashMap<String, Object>();
    
	/**
     * 获取排序信息 该字段会自动拼装到查询sql中
     * 使用举例："iou_id desc,term_no asc"
     */
	public String getColumnSort() {
		return columnSort;
	}

	 /**
     * 设置排序信息 该字段会自动拼装到查询sql中
     * 使用举例："IOU_ID DESC,TERM_NO ASC"
     */
	public void setColumnSort(String columnSort) {
		this.columnSort = columnSort;
	}
	/**
	 * 获取创建时间
	 */
	public Date getCreatedTime() {
	    return this.createdTime;
	}
	
	/**
	 * 设置创建时间
	 */
	public void setCreatedTime(Date createdTime) {
	    this.createdTime=createdTime;
	}
	/**
	 * 获取修改时间
	 */
	public Date getModifiedTime() {
	    return this.modifiedTime;
	}
	
	/**
	 * 设置修改时间
	 */
	public void setModifiedTime(Date modifiedTime) {
	    this.modifiedTime=modifiedTime;
	}
	/**
	 * 获取记录最近更新用户
	 */
	public String getLastUpdateUsrid() {
	    return this.lastUpdateUsrid;
	}
	
	/**
	 * 设置记录最近更新用户
	 */
	public void setLastUpdateUsrid(String lastUpdateUsrid) {
	    this.lastUpdateUsrid=lastUpdateUsrid;
	}
	/**
	 * 获取记录总共更新次数
	 */
	public Integer getLastUpdateNo() {
	    return this.lastUpdateNo;
	}
	
	/**
	 * 设置记录总共更新次数
	 */
	public void setLastUpdateNo(Integer lastUpdateNo) {
	    this.lastUpdateNo=lastUpdateNo;
	}

	/**
	 * <P>获取区间查询字段</p>
	 * <P>区间查询字段（主要为了兼容日期区间查询条件等）</p>
     * <P>用法：传递的查询条件为：key值为字段属性+"Begin"/"End"; value值为区间的边界值</p>
     * <P>举例：字段属性applyTime根据区间查询： applyTimeBegin 和applyTimeEnd</p>
	 * @return querySectionMap 区间查询字段</p>
	 */
	public Map<String, Object> getQuerySectionMap() {
		return querySectionMap;
	}

	/**
	 * <P>设置区间查询字段</p>
	 * <P>区间查询字段（主要为了兼容日期区间查询条件等）</p>
     * <P>用法：传递的查询条件为：key值为字段属性+"Begin"/"End"; value值为区间的边界值</p>
     * <P>举例：字段属性applyTime根据区间查询： applyTimeBegin 和applyTimeEnd</p>
	 * @param querySectionMap 区间查询字段
	 */
	public void setQuerySectionMap(Map<String, Object> querySectionMap) {
		this.querySectionMap = querySectionMap;
	}
}
